<?php

class Autoevaluacion_Model_DbTable_ElementosLista extends Zend_Db_Table_Abstract {
	
	protected $_name = 'elementoslista';
	protected $_primary = 'codelementolista';
	protected $_sequence = 'seq_elementoslista';
	protected $_rowClass = 'App_Audit_Row';
	
    public function nextOrden($codseccion) {
		$ordenMax = $this->getAdapter()->fetchOne("SELECT MAX(orden) AS cantidad FROM seccionelementos WHERE codseccionlista={$codseccion}");
		if(is_null($ordenMax)) {
			$ordenMax=1;
		} else {
			$ordenMax++;
		}
		return $ordenMax;
	}
	
    public function getElementos($tipolista, $codlista, $codinstitucion) {
		$select = $this->select(self::SELECT_WITH_FROM_PART)
						->where("tipolista=?", $tipolista)
						->where("codelementolista NOT IN (SELECT codelementolista FROM seccionelementos WHERE codseccionlista IN (SELECT codseccionlista FROM seccioneslista WHERE codlista=?))", $codlista)
						->order("fecha_creacion");
//        Zend_Debug::dump($select->__toString());

        if (!empty($codinstitucion)){
            $select->where("codinstitucion=?",$codinstitucion);
        }
//        else{
//            $select->where("codinstitucion IS NOT NULL");
//        }
		return $select->query()->fetchAll();
	}
	
	public function getElementosAsignados($codseccionlista) {
		$select = $this->select(self::SELECT_WITH_FROM_PART)
		                ->join(array("sele"=>"seccionelementos"), "sele.codelementolista={$this->_name}.codelementolista", array("(SELECT COUNT(*) FROM seccionelementos se WHERE se.codelementolista=sele.codelementolista) AS cantidad "))
						->where("sele.codseccionlista=?", $codseccionlista)
						->order("sele.orden");
		$select->setIntegrityCheck(false);
		return $select->query()->fetchAll();
	}
	
    public function asignarElementoSeccion($codelementolista, $codseccion) {
        $datos = array();
        $datos["codelementolista"] = $codelementolista;
        $datos["codseccionlista"] = $codseccion;
        $datos["orden"] = $this->nextOrden($codseccion);
        $this->getAdapter()->insert("seccionelementos", $datos);
    }
	
    public function removerElementoSeccion($codelementolista, $codseccion) {
        $where = "codelementolista={$codelementolista} AND codseccionlista={$codseccion}";
        $this->getAdapter()->delete("seccionelementos", $where);
    }
	
	public function resetOrden($codseccion) {
		$select = $this->getAdapter()->select()->from("seccionelementos")->where("codseccionlista=?", $codseccion)->order("orden");
		$registros = $select->query()->fetchAll();
		$contador=1;
		foreach ($registros as $fila) {
		    $where = "codelementolista={$fila["codelementolista"]} AND codseccionlista={$fila["codseccionlista"]}";
		    $this->getAdapter()->update("seccionelementos", array("orden"=>$contador), $where);
			$contador++;
		}
	}
	
	/*public function guardarOrden($codsesion, $orden) {
		$this->getAdapter()->beginTransaction();
		try {
			
			$contador=1;
			foreach ($orden as $codagenda) {
				$row = $this->find($codagenda)->current();
				$row->orden = $contador++;
				$row->save();
			}
			$this->getAdapter()->commit();
			
		} catch(Exception $e) {
			$this->getAdapter()->rollBack();
			throw $e;
		}
	}*/
	
}//fin de la clase
